98
Tip 2: Heuristics
We have already seen in Chap. 6 that due to the large amounts of data in bioinformatics,
one tries to use algorithms that are as fast as possible, even if this comes at the expense of
accuracy (heuristics such as BLAST). For informatics tips and tricks for better and faster
programming, the “numerical recipies” as described there are highly recommended.
Another commendable and non-profit activity is “Project Jupyter” to advance freely avail
able software, open standards and services for interactive work with dozens of program
ming languages such as Julia, Python and R. For this purpose, Jupyter notebooks and the
JupyterLab were developed, which have a high reusability and good documentation.
Tip 3: Parallelization
Finally, an important technique for complex calculations is to use many processors in
parallel. For this, the computational task must also be “parallelized”, i.e. rewritten in such
a way that the distribution to several processors (or computer nodes) actually saves time
and does not lead to a mess and a lot of additional communication.
There are also particularly suitable programming languages for this purpose (e.g.
Popjava, PopC or the network-friendly web-based environment from the Jupyter note
books). Another programming language is Julia (https://julialang.org). It was released in
2012 after 3 years of development. It is a higher level Matlab-like programming language
for numerical and scientific computing usable for Mac, LINUX and Windows alike with
quite fast execution speed. The compiler with its own standard library was written in C, C
+ + and Scheme. Important are multimethods, LISP-like macros and metaprogramming,
direct call to C and Python functions. Designed for parallel programming and distributed
computing, co-routines allow easy multithreading by Julia.
These are important ways to equip and use a computer with many processors with
appropriate operating software.
In general, it should be remembered that computers are stronger in a network. Even
simple computers (PCs) can help solve difficult problems via networking on the Internet
when their computing power is not otherwise needed (from SETI@home to Bitcoins to
scientific projects, e.g. https://blog.exabyte.io/enabling-new-science-through-accessible-
modeling-and-simulations-6710098a294).
Other Possibilities Include
Virtualization
Alternatively, various LINUX or UNIX computers can be interconnected by suitable soft
ware to form a virtual, parallel computer (e.g. use of PVM, https://www.csm.ornl.gov/
pvm/). In the meantime, there are also commercial providers of cloud computers, i.e. a
virtual computer environment with many node computers is made available to interested
customers by these providers via the Internet.
8 When Does the Computer Stop Calculating?